Taming the Concurrency: Controlling Concurrent Behavior while Testing Multithreaded Software

نویسندگان

  • Evgeny Vainer
  • Amiram Yehudai
چکیده

Developing multithreaded software is an extremely challenging task, even for experienced programmers. The challenge does not end after the code is written. There are other tasks associated with a development process that become exceptionally hard in a multithreaded environment. A good example of this is creating unit tests for concurrent data structures. In addition to the desired test logic, such a test contains plenty of synchronization code that makes it hard to understand and maintain. In our work we propose a novel approach for specifying and executing schedules for multithreaded tests. It allows explicit specification of desired thread scheduling for some unit test and enforces it during the test execution, giving the developer an ability to construct deterministic and repeatable unit tests. This goal is achieved by combining a few basic tools available in every modern runtime/IDE and does not require dedicated runtime environment, new specification language or code under test modifications.

برای دانلود متن کامل این مقاله و بیش از 32 میلیون مقاله دیگر ابتدا ثبت نام کنید

ثبت نام

اگر عضو سایت هستید لطفا وارد حساب کاربری خود شوید

منابع مشابه

The Case for Region Serializability

It is difficult to write correct multithreaded code. This difficulty is compounded by the weak memory model [1] provided to multithreaded applications running on commodity multicore hardware, where there is not an easily understood semantics for applications containing data races. For example, the DRF0 memory model only guarantees sequential consistency to data-race free programs [2], and while...

متن کامل

A Thread Debugger for Testing and Reproducing Concurrency Scenarios

Definitive testing of concurrency scenarios Execution sequence of multithreaded programs inherently nondeterministic Program behavior in different executions need not be the same Context switches, event ordering and synchronization are main reasons Mismatch between programming model and debugging model Capability to record, analyze and playback particular execution sequences Software pattern ne...

متن کامل

A scheme for dynamic detection of concurrent execution of object-oriented software

Program testing-.is the most widely adopted approach for assuring the quality and reliability of software systems. Despite the popularity of the object-onented programs, its testing is much : more challenging than that of the conventional programs. ~ We proposed previously a methodology known as TACCLE for testing object-oriented software. It has not, however, addressed the aspects of Concurren...

متن کامل

Model Checking Multithreaded Programs by Means of Reduced Models

Java is largely used to develop distributed and concurrent systems, but testing multithreaded systems cannot guarantee the quality of the software; in contrast, verification techniques give us a higher confidence about the system and, among these, model checking methods automatically establish properties of complex systems. Such techniques are usually applied to specification languages, and sev...

متن کامل

Groundwork for the Development of Testing Plans for Concurrent Software

While multi-threading has become commonplace in many application domains (e.g., embedded systems, digital signal processing (DSP), networks, IP services, and graphics), multi-threaded code often requires complex co-ordination of threads. As a result, multithreaded implementations are prone to subtle bugs that are difficult and time-consuming to locate. Moreover, current testing techniques that ...

متن کامل

ذخیره در منابع من


  با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید

برای دانلود متن کامل این مقاله و بیش از 32 میلیون مقاله دیگر ابتدا ثبت نام کنید

ثبت نام

اگر عضو سایت هستید لطفا وارد حساب کاربری خود شوید

عنوان ژورنال:
  • CoRR

دوره abs/1409.0982  شماره 

صفحات  -

تاریخ انتشار 2013